perm filename LISP2[W76,JMC] blob
sn#197589 filedate 1976-01-20 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 LISP 2 SPECIFICATIONS
C00004 ENDMK
Cā;
LISP 2 SPECIFICATIONS
Here are some specifications for a new language of LISP type:
1. We improve the extraction of elements of a list structure
by using numbers to get elements of a list. The number itself is
the function (in accordance with an elegant defintion of the numbers
by Dana Scott whereby n is defined as the function extracting the
nth element of a list). Thus we say (1 X) instead of (CAR X) and
(2 X) instead of (CADR X). Complex combinations are written by
iterating the numbers before the argument which is unambiguous
because they are all functions of one argument. Thus (3 1 X) is
the same as (CADDAR X).
Just plain CDR is called R (for "rest of the list").
2. We use Harold McIntosh's (IF P A B) instead of (COND (P A) (T B)).
I have not yet decided how to do long conditional expressions.
3. We must decide whether to use call-by-name.
4. The ATOM and NULL operators denoted by A and N can be iterated with
numbers so that (A 2 1 X) is the same as (ATOM (CADDAR X)).
5. The normal CONS is a hash cons so that = can be used for EQ and EQUAL.
6. CONS, LIST and APPEND are as in LISP 1.5.
7. LAMBDA is as in LISP 1.5.